def id(user_id):
    # 检查ID长度是否超过8位
    if len(user_id) > 8:
        return False
    # 检查ID是否只包含数字、字母、下划线
    for char in user_id:
        if not (char.isalnum() or char == '_'):
            return False
    return True


def is_valid_email(email):
    # 检查电子邮件地址的基本格式
    at_count = email.count('@')
    dot_count = email.count('.')

    if at_count != 1 or dot_count < 1:
        return False

    local, domain = email.split('@')
    if not local or not domain:
        return False

    if '.' not in domain:
        return False

    return True


def is_valid_id_card(id_card):
    # 检查身份证号的基本格式
    if len(id_card) != 18:
        return False
    # 前17位必须是数字
    if not id_card[:17].isdigit():
        return False
    # 最后一位可以是数字或大写字母X
    if not (id_card[-1].isdigit() or id_card[-1] == 'X'):
        return False
    return True


def is_valid_name(name):
    # 检查姓名只能是中文且不能超过4位
    if len(name) > 4:
        return False
    for char in name:
        if not ('\u4e00' <= char <= '\u9fff'):
            return False
    return True


def register_user():
    while True:
        user_id = input("请输入ID（长度不能超过8位，且只能由数字、字母、下划线组成）：")
        if id(user_id):
            break
        else:
            print("ID格式不正确，请重新输入。")

    while True:
        email = input("请输入EMAIL地址：")
        if is_valid_email(email):
            break
        else:
            print("EMAIL地址格式不正确，请重新输入。")

    while True:
        id_card = input("请输入身份证号（18位数字或最后一位为大写字母X）：")
        if is_valid_id_card(id_card):
            break
        else:
            print("身份证号格式不正确，请重新输入。")

    while True:
        name = input("请输入姓名（只能中文且不能超过4位）：")
        if is_valid_name(name):
            break
        else:
            print("姓名格式不正确，请重新输入。")

    print("注册成功！")
    print(f"ID: {user_id}")
    print(f"EMAIL: {email}")
    print(f"身份证号: {id_card}")
    print(f"姓名: {name}")


# 运行注册程序
register_user()